技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2025 iThome 鐵人賽
DAY
3
0
自我挑戰組
安豬複習
系列 第
3
篇
#02
17th鐵人賽
hcalan
2025-09-17 23:38:30
63 瀏覽
分享至
Android 系統架構總覽:Linux Kernel、HAL、Native libraries、Framework、Applications
Android 系統層級
Android 系統大致分為 五個主要層級:
Linux Kernel (核心層)
Hardware Abstraction Layer (HAL, 硬體抽象層)
Native Libraries & Android Runtime (本地函式庫與執行環境)
Application Framework (應用框架層)
Applications (應用程式層)
圖這邊有
Link
Linux Kernel (核心層)
基於 Linux 核心,版本通常由 Google 維護
提供 記憶體管理、程序管理、驅動程式 (Driver)、網路堆疊
Android 特有的模組:
Binder IPC Driver(跨進程通訊)
wakelocks(電源管理)
ASHMEM(共享記憶體)
Hardware Abstraction Layer (HAL)
介於 硬體驅動 與 Framework 之間的中介層
提供 統一 API,避免 Framework 直接依賴硬體實作
例如:
Camera HAL(攝影機功能)
Sensor HAL(加速度計、陀螺儀)
Audio HAL(音訊輸入/輸出)
Native Libraries & Android Runtime (ART)
Native Libraries
SQLite(資料庫)
OpenGL ES(圖形渲染)
WebKit(瀏覽器引擎,現今已改為 Chromium-based WebView)
Media Framework(音訊/影片編解碼)
Android Runtime (ART)
取代舊的 Dalvik VM
支援 Ahead-of-Time (AOT) 與 Just-in-Time (JIT) 編譯
提供垃圾回收 (GC) 機制
Application Framework (應用框架層)
為應用程式提供 高階 API
主要系統服務由 SystemServer 啟動並運行:
ActivityManagerService (AMS):管理應用與生命週期
WindowManagerService (WMS):視窗與 UI 管理
PackageManagerService (PMS):APK 安裝與權限檢查
ContentProvider、LocationManager、NotificationManager...
Applications (應用程式層)
使用 Java/Kotlin 撰寫
利用 Application Framework 提供的 API
分為:
系統應用(設定、聯絡人、電話、相機)
第三方應用(LINE、Facebook、遊戲 App 等)
Questions
為什麼需要 HAL, Android 卻不讓 Framework 直接呼叫硬體驅動?
Binder IPC 在 Android 系統中的關鍵角色是什麼?
ART 的 AOT + JIT 混合模式相比傳統 JVM 有什麼優勢?
留言
追蹤
檢舉
上一篇
#01
下一篇
#03
系列文
安豬複習
共
31
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
27
#26
28
#27
29
#28
30
#29
31
#30
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19845
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
EPSON LQ-690C 印表機中一刀跑版
[Javascript] 非同步執行,如何延緩後面程式的處理 ??
AARQ 通訊協議是?
印表機設定 - Epson 690c
FortiGate SSLVPN替代方案?
Dell or Asus 伺服器,哪牌比較好?
Dell or Asus Storage 或NAS,哪牌比較好?
將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動
sdray vigor2927 sslvpn ip設定問題
iT邦幫忙如何搜尋 關鍵字?
熱門回答
FortiGate SSLVPN替代方案?
EPSON LQ-690C 印表機中一刀跑版
[Javascript] 非同步執行,如何延緩後面程式的處理 ??
印表機設定 - Epson 690c
Dell or Asus 伺服器,哪牌比較好?
熱門文章
台灣職場必學的Excel函數技巧
c++的.h和cpp,放在相同目錄下好,還是頂層就用include,src分開好? [搬運/問答]
什麼是四大報表及其組成?完整解析
VScode 開發應用系統專案(8-1) - Spring Boot Security 設定與認證前置準備
VScode 開發應用系統專案(8-3) - Spring Boot Security 客製化多元登入認證
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}